home *** CD-ROM | disk | FTP | other *** search
/ Gekikoh Dennoh Club 7 / Gekikoh Dennoh Club Vol. 7 (Japan).7z / Gekikoh Dennoh Club Vol. 7 (Japan) (Track 01).bin / tools / motosx / mkmotos.s < prev    next >
Encoding:
Text File  |  1998-02-01  |  3.2 KB  |  141 lines

  1. *========================================================================
  2. *    mkmotos.s
  3. *            Written by Igarashi
  4. *========================================================================
  5.         .cpu    68000
  6. *========================================================================
  7.         .include    doscall.mac
  8.         .include    iocscall.mac
  9. *========================================================================
  10.         .text
  11.         .even
  12. *========================================================================
  13. entry:
  14.         lea.l    inisp(pc),sp
  15.  
  16.         lea.l    buf(pc),a6
  17.         move.l    12(a0),d7    *pspMEMEND
  18.         sub.l    a6,d7        *d7.l = バッファサイズ
  19.  
  20.         lea.l    dirbuf(pc),a5
  21.         move.w    #$9070,d1
  22.         move.l    #$03000101,d2
  23.         move.l    #$00000800,d3
  24.         movea.l    a5,a1
  25.         IOCS    __B_READ
  26.         andi.l    #$c0000000,d0
  27.         bne    readerror
  28.         lea.l    dirid(pc),a0
  29.         movea.l    a5,a1
  30.         moveq.l    #16-1,d0
  31. @@:        cmpm.b    (a0)+,(a1)+
  32.         dbne    d0,@b
  33.         bne    illdisk
  34.  
  35.         bra    next
  36. loop:
  37.         cmp.l    d7,d6
  38.         bhi    nomem
  39. *        move.w    #$9070,d1
  40.         move.w    8(a5),d2
  41.                 *トラック/セクタ→トラック/サイド/セクタ
  42.         move.w    d2,d0
  43.         andi.w    #$01ff,d0
  44.         lsr.w    #8,d2
  45.         lsr.w    #1,d2
  46.         add.w    #$0300,d2
  47.         swap.w    d2
  48.         move.w    d0,d2
  49.         move.l    d6,d3
  50.         movea.l    a6,a1
  51.         IOCS    __B_READ
  52.         andi.l    #$c0000000,d0
  53.         bne    readerror
  54.  
  55.         movea.l    a5,a0        *a0 = ファイル名先頭
  56.         lea.l    fnbuf(pc),a1
  57.         moveq.l    #6-1,d0
  58. @@:        move.b     (a0)+,(a1)+
  59.         dbra    d0,@b
  60.  
  61.         pea.l    wmes(pc)
  62.         DOS    __PRINT
  63. *        addq.l    #4,sp
  64.         pea.l    fnbuf(pc)
  65.         DOS    __PRINT
  66. *        addq.l    #4,sp
  67.         pea.l    wmes2(pc)
  68.         DOS    __PRINT
  69.         lea.l    4+4+4(sp),sp
  70.  
  71.         move.w    #$0020,-(sp)    *ARCHIVE
  72.         pea.l    fnbuf(pc)
  73.         DOS    __CREATE
  74. *        addq.l    #6,sp
  75.         move.l    d0,d5        *d5.w = ファイルハンドル
  76.         bmi    writeerror
  77.  
  78.         move.l    d6,-(sp)
  79.         pea.l    (a6)
  80.         move.w    d5,-(sp)
  81.         DOS    __WRITE
  82. *        lea.l    10(sp),sp
  83.         tst.l    d0
  84.         bmi    writeerror
  85.         DOS    __CLOSE
  86.         lea.l    6+10(sp),sp
  87.  
  88.         pea.l    compmes(pc)
  89.         DOS    __PRINT
  90.         addq.l    #4,sp
  91.  
  92. next:        lea.l    16(a5),a5
  93.         move.l    12(a5),d6    *d6.l = ファイルサイズ
  94.         bpl    loop
  95.  
  96.         DOS    __EXIT
  97.  
  98. readerror:    lea.l    readerrmes(pc),a0
  99.         bra    errorexit
  100. illdisk:    lea.l    illdiskmes(pc),a0
  101.         bra    errorexit
  102. nomem:        lea.l    nomemmes(pc),a0
  103.         bra    errorexit
  104. writeerror:    lea.l    writeerrmes(pc),a0
  105.         bra    errorexit
  106. errorexit:    move.w    #2,-(sp)    *STDERR
  107.         pea.l    (a0)
  108.         DOS    __FPUTS
  109.         addq.l    #6,sp
  110.         move.w    #1,-(sp)
  111.         DOS    __EXIT2
  112. *========================================================================
  113. dirid:        .dc.b    'YODEL. DOS V1.00'
  114. readerrmes:    .dc.b    'ディスクが読み込めません',$0d,$0a,0
  115. illdiskmes:    .dc.b    'MOTOS のディスクではないようです',$0d,$0a,0
  116. nomemmes:    .dc.b    'メモリが足りません',$0d,$0a,0
  117. writeerrmes:    .dc.b    'ファイルが書き出せません',$0d,$0a,0
  118. wmes:        .dc.b    'Writing ',0
  119. wmes2:        .dc.b    ' ... ',0
  120. compmes:    .dc.b    'Completed.',$0d,$0a,0
  121. *========================================================================
  122.         .bss
  123.         .even
  124. *========================================================================
  125. dirbuf:
  126.         .ds.b    $800
  127. fnbuf:        .ds.b    6+1
  128.  
  129. *========================================================================
  130.         .stack
  131.         .even
  132. *========================================================================
  133.         .ds.l    256/4
  134. inisp:
  135. *------------------------------------------------------------------------
  136. buf:
  137. *========================================================================
  138.         .end    entry
  139.  
  140.  
  141.